home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 102 (1989-08-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 102 (1989-08-15)(Ossowski, Stefan)(DE)(PD).adf / GEO / GEO < prev    next >
Text File  |  1989-04-21  |  22KB  |  811 lines

  1. '************************************
  2. '*               GEO                *
  3. '*         Geographielern-          *
  4. '*        und -testprogramm         *
  5. '*                                  *
  6. '*  Guenther Pogrzeba --- 11.04.89  *
  7. '************************************
  8.  
  9. CLEAR,60000&
  10. DIM s$(180),h$(180),rx%(180),ry%(180)
  11. DIM f$(180),e$(180),h1$(180),h2$(180)
  12. DIM s%(180),ma%(180),sr%(15),pr$(180)
  13. DIM sr2%(12),s2%(180),s3%(180),s4%(180)
  14. DIM ar$(180),re1(15),re2(15),re3(15),re4(15),re5(15)
  15. DIM rot(15),gelb(15),blau(15),gruen(15),ora(15)
  16. DIM pu%(60),ri$(60),an$(60),fr$(60)
  17. DIM sl%(30)
  18.  
  19. LIBRARY "intuition.library"
  20.  
  21. OPEN "Wissen" FOR INPUT AS 1
  22. FOR i%=1 TO 170
  23.   INPUT #1,rx%(i%)
  24.   INPUT #1,ry%(i%)
  25.   INPUT #1,ar$(i%)
  26.   INPUT #1,s2%(i%)
  27.   INPUT #1,pr$(i%)
  28.   INPUT #1,s$(i%)
  29.   INPUT #1,h$(i%)
  30.   INPUT #1,f$(i%)
  31.   INPUT #1,e$(i%)
  32.   INPUT #1,h1$(i%)
  33.   INPUT #1,h2$(i%)
  34.   INPUT #1,s%(i%)
  35.   INPUT #1,s3%(i%)
  36.   INPUT #1,s4%(i%)
  37. NEXT
  38.  
  39. SCREEN 1,640,254,4,2
  40. WINDOW 3,,(149,145)-(499,240),16,1
  41. w3&=WINDOW(7)
  42. WINDOW 2,"G E O",,15,1
  43.  
  44. PALETTE 0,0,.13,.4
  45. PALETTE 1,1,1,1
  46. PALETTE 2,0,0,0
  47. PALETTE 3,.6,.4,.2
  48. PALETTE 4,.73,0,0
  49. PALETTE 5,.53,.53,.53
  50. PALETTE 6,0,0,.73
  51. PALETTE 7,1,.8,0
  52. PALETTE 8,0,.87,0
  53. PALETTE 9,1,.33,0
  54. PALETTE 10,0,0,.8
  55. PALETTE 11,0,.4,.13
  56. PALETTE 12,0,.47,.53
  57. PALETTE 13,0,.73,1
  58. PALETTE 14,0,.8,.33
  59.  
  60. DATA 1,2,1,3,2,3,1,2,3,2,1,3,1,3,2
  61. FOR i%=1 TO 15:READ sr%(i%):NEXT
  62. DATA 1,2,3,2,1,3,1,2,3,1,3,2
  63. FOR i%=1 TO 12:READ sr2%(i%):NEXT
  64. DATA 1,2,3,1,2,3
  65. FOR i%=1 TO 6:READ sr3%(i%):NEXT
  66. DATA 1,2,3,2,1,3,1,3,2
  67. FOR i%=1 TO 9:READ sr4%(i%):NEXT
  68.  
  69. WINDOW 3:GOSUB Karte:WINDOW 2
  70. COLOR 2,5:CLS
  71. LINE(6,2)-(9,7),4,bf
  72. LINE(3,4)-(12,5),4,b
  73. GET(3,2)-(12,7),rot
  74. LINE(6,2)-(9,7),7,bf
  75. LINE(3,4)-(12,5),7,b
  76. GET(3,2)-(12,7),gelb
  77. LINE(6,2)-(9,7),8,bf
  78. LINE(3,4)-(12,5),8,b
  79. GET(3,2)-(12,7),gruen
  80. LINE(6,2)-(9,7),10,bf
  81. LINE(3,4)-(12,5),10,b
  82. GET(3,2)-(12,7),blau
  83. LINE(6,2)-(9,7),9,bf
  84. LINE(3,4)-(12,5),9,b
  85. GET(3,2)-(12,7),ora
  86.  
  87. main:
  88. WINDOW 2:COLOR 3,0:CLS
  89. FOR i%=1 TO 170:ma%(i%)=0:NEXT
  90.  
  91. LOCATE 4,37:PRINT "G E O
  92. LOCATE 7,24:PRINT "Geographielern- und -testprogramm
  93. pu%=0
  94. FOR i%=1 TO 170:ma%(i%)=0:NEXT
  95. LOCATE 13,10:PRINT "Kennenlernen zufällig
  96. LOCATE 14,10:PRINT "ausgewählter Länder
  97. LOCATE 13,49:PRINT "Kennenlernen von
  98. LOCATE 14,49:PRINT "speziellen Ländern
  99. LOCATE 17,10:PRINT "Kurztest
  100. LOCATE 17,49:PRINT "Normaler Test
  101. LOCATE 21,10:PRINT "Super-Test
  102. LOCATE 21,49:PRINT "Programm verlassen
  103. rf%=7:hf%=0:ff%=4:ez%=13:anz%=6:GOSUB Auswahl
  104. IF ak%=6 THEN WINDOW CLOSE 3:WINDOW CLOSE 2:SCREEN CLOSE 1:END
  105. COLOR 2,5
  106. IF ak%=1 THEN zuf
  107. IF ak%=2 THEN ausg
  108. IF ak%=3 THEN kurz
  109. IF ak%=4 THEN mittel
  110. IF ak%=5 THEN lang
  111. GOTO main
  112.  
  113. ausg:
  114. WINDOW 2:COLOR 13,12:CLS
  115. LOCATE 3,3:PRINT "Anfangsbuchstabe des gewünschten Staates:
  116. LOCATE 7,10:PRINT "A/Ä
  117. LOCATE 7,49:PRINT "B/C
  118. LOCATE 11,10:PRINT "D-H
  119. LOCATE 11,49:PRINT "I-K
  120. LOCATE 15,10:PRINT "L/M
  121. LOCATE 15,49:PRINT "N-R
  122. LOCATE 19,10:PRINT "S
  123. LOCATE 19,49:PRINT "T-Z
  124. LOCATE 22,10:PRINT "Zurück zum
  125. LOCATE 23,10:PRINT "Hauptmenü"
  126. rf%=4
  127. hf%=12
  128. ff%=1
  129. ez%=6:anz%=9
  130. GOSUB Auswahl
  131. IF ak%=9 THEN main
  132. CLS:PRINT " Moment...
  133. g2%=0:g3%=0:g4%=0:g5%=0:g6%=0
  134. IF ak%=1 THEN g1%=65:g2%=196
  135. IF ak%=2 THEN g1%=66:g2%=67
  136. IF ak%=3 THEN g1%=68:g2%=69:g3%=70:g4%=71:g5%=72
  137. IF ak%=4 THEN g1%=73:g2%=74:g3%=75
  138. IF ak%=5 THEN g1%=76:g2%=77
  139. IF ak%=6 THEN g1%=78:g2%=79:g3%=80:g4%=81:g5%=82:g6%=214
  140. IF ak%=7 THEN g1%=83
  141. IF ak%=8 THEN g1%=84:g2%=85:g3%=86:g4%=87:g5%=90
  142. gs%=0
  143. FOR i%=1 TO 170
  144.   s$=LEFT$(s$(i%),1)
  145.   s%=ASC(s$)
  146.   IF s%=g1% OR s%=g2% OR s%=g3% OR s%=g4% OR s%=g5% OR s%=g6% THEN
  147.     gs%=gs%+1
  148.     sl%(gs%)=i%
  149.   END IF
  150. NEXT
  151. FOR i%=1 TO gs%-1
  152.   m$=s$(sl%(i%))
  153.   FOR j%=i%+1 TO gs%
  154.     IF s$(sl%(j%))<m$ THEN
  155.       m$=s$(sl%(j%))
  156.       SWAP sl%(j%),sl%(i%)
  157.     END IF
  158. NEXT j%,i%
  159. CLS
  160. x=gs%/2:x%=INT(x+.6)
  161. FOR i%=1 TO x%
  162.   LOCATE i%+2,3:PRINT USING"##";i%;:PRINT "  "s$(sl%(i%))
  163. NEXT
  164. FOR i%=x%+1 TO gs%
  165.   LOCATE i%-x%+2,38:PRINT USING"##";i%;:PRINT "  "s$(sl%(i%))
  166. NEXT:LOCATE 20,1
  167. FOR i%=1 TO gs%
  168.   PRINT USING"###";i%;
  169.   LINE(i%*24-20,150)-(i%*24+3,161),14,b
  170. NEXT
  171. 1566 IF MOUSE(0)=0 THEN 1566
  172. 1567 IF MOUSE(0)=0 THEN 1567
  173. x%=MOUSE(1):y%=MOUSE(2)
  174. IF y%<150 OR y%>161 THEN 1566
  175. IF x%<4 OR x%>gs%*24+3 THEN 1566
  176. z%=INT((x%-4)/24)+1
  177. r%=sl%(z%)
  178. WINDOW 3
  179. a%=rx%(r%):b%=ry%(r%)
  180. GET(a%,b%)-(a%+9,b%+5),re3:PUT(a%,b%),rot,PSET
  181. WINDOW 2:COLOR 9,11:CLS
  182. WindowToFront(w3&)
  183. LOCATE 3,20:PRINT "Staat:      "s$(r%)
  184. LOCATE 4,20:PRINT "Hauptstadt: "h$(r%)
  185. LOCATE 5,20:PRINT "Fläche:     ";
  186. f$=f$(r%):f=VAL(f$)*1000
  187. n%=1:h=1E+08:fa$=""
  188. FOR j%=7 TO 0 STEP -1
  189.   h=h/10:z%=0
  190.   WHILE f>=h:f=f-h:z%=z%+1:WEND
  191.   IF z%=0 AND n%=1 THEN 2009
  192.   fa$=fa$+CHR$(z%+48):n%=0
  193.   IF j%=6 OR j%=3 THEN fa$=fa$+"."
  194. 2009 NEXT
  195. PRINT fa$" qkm
  196. LOCATE 6,20:PRINT "Einwohner:  ";
  197. e$=e$(r%):e=VAL(e$)
  198. IF e>=1 THEN e$=e$+" Mio.":GOTO 2002
  199. IF e>=.1 THEN e$=RIGHT$(e$,LEN(e$)-2):e$=e$+"00":e$=LEFT$(e$,3)+".000":GOTO 2002
  200. IF e>=.01 THEN e$=RIGHT$(e$,LEN(e$)-3):e$=e$+"0":e$=LEFT$(e$,2)+".000":GOTO 2002
  201. e$=RIGHT$(e$,LEN(e$)-4):e$=LEFT$(e$,1)+".000"
  202. 2002 PRINT e$
  203. LOCATE 11,20:PRINT "Nächstes Land
  204. LOCATE 13,20:PRINT "Zurück zum Hauptmenü
  205. LINE(146,78)-(319,88),4,b
  206. LINE(146,94)-(319,104),4,b
  207. 2004 IF MOUSE(0)=0 THEN 2004
  208. 2005 IF MOUSE(0)=0 THEN 2005
  209. x%=MOUSE(1):y%=MOUSE(2)
  210. IF x%<146 OR x%>319 THEN 2004
  211. IF y%>=78 AND y%<=88 THEN WINDOW 3:PUT(a%,b%),re3,PSET:GOTO ausg
  212. IF y%>=94 AND y%<=104 THEN WINDOW 3:PUT(a%,b%),re3,PSET:WINDOW 2:GOTO main
  213. GOTO 2004
  214.  
  215. zuf:
  216. RANDOMIZE TIMER
  217. 1001 r%=INT(RND*170)+1
  218. IF ma%(r%)=1 THEN 1001
  219. ma%(r%)=1
  220. WINDOW 3
  221. a%=rx%(r%):b%=ry%(r%)
  222. GET(a%,b%)-(a%+9,b%+5),re3:PUT(a%,b%),rot,PSET
  223. WINDOW 2:COLOR 9,11:CLS
  224. WindowToFront(w3&)
  225. LOCATE 3,20:PRINT "Staat:      "s$(r%)
  226. LOCATE 4,20:PRINT "Hauptstadt: "h$(r%)
  227. LOCATE 5,20:PRINT "Fläche:     ";
  228. f$=f$(r%):f=VAL(f$)*1000
  229. n%=1:h=1E+08:fa$=""
  230. FOR j%=7 TO 0 STEP -1
  231.   h=h/10:z%=0
  232.   WHILE f>=h:f=f-h:z%=z%+1:WEND
  233.   IF z%=0 AND n%=1 THEN 1009
  234.   fa$=fa$+CHR$(z%+48):n%=0
  235.   IF j%=6 OR j%=3 THEN fa$=fa$+"."
  236. 1009 NEXT
  237. PRINT fa$" qkm
  238. LOCATE 6,20:PRINT "Einwohner:  ";
  239. e$=e$(r%):e=VAL(e$)
  240. IF e>=1 THEN e$=e$+" Mio.":GOTO 1002
  241. IF e>=.1 THEN e$=RIGHT$(e$,LEN(e$)-2):e$=e$+"00":e$=LEFT$(e$,3)+".000":GOTO 1002
  242. IF e>=.01 THEN e$=RIGHT$(e$,LEN(e$)-3):e$=e$+"0":e$=LEFT$(e$,2)+".000":GOTO 1002
  243. e$=RIGHT$(e$,LEN(e$)-4):e$=LEFT$(e$,1)+".000"
  244. 1002 PRINT e$
  245. LOCATE 11,20:PRINT "Nächstes Land
  246. LOCATE 13,20:PRINT "Zurück zum Hauptmenü
  247. LINE(146,78)-(319,88),4,b
  248. LINE(146,94)-(319,104),4,b
  249. 1004 IF MOUSE(0)=0 THEN 1004
  250. 1005 IF MOUSE(0)=0 THEN 1005
  251. x%=MOUSE(1):y%=MOUSE(2)
  252. IF x%<146 OR x%>319 THEN 1004
  253. IF y%>=78 AND y%<=88 THEN WINDOW 3:PUT(a%,b%),re3,PSET:GOTO 1001
  254. IF y%>=94 AND y%<=104 THEN WINDOW 3:PUT(a%,b%),re3,PSET:WINDOW 2:GOTO main
  255. GOTO 1004
  256.  
  257. kurz:
  258. zahl%=6:GOSUB Hst
  259. zahl2%=3:GOSUB Hl
  260. zahl%=9:zahl3%=3:GOSUB Fl
  261. zahl%=12:zahl3%=3:GOSUB Einw
  262. zahl%=15:zahl3%=3:GOSUB Reg
  263. mx%=18:GOSUB Auswert
  264. GOTO main
  265.  
  266. mittel:
  267. zahl%=9:GOSUB Hst
  268. zahl2%=6:GOSUB Hl
  269. zahl%=15:zahl3%=3:GOSUB Fl
  270. zahl%=18:zahl3%=3:GOSUB Einw
  271. zahl%=21:zahl3%=6:GOSUB Reg
  272. mx%=27:GOSUB Auswert
  273. GOTO main
  274.  
  275. lang:
  276. zahl%=15:GOSUB Hst
  277. zahl2%=12:GOSUB Hl
  278. zahl%=27:zahl3%=6:GOSUB Fl
  279. zahl%=33:zahl3%=6:GOSUB Einw
  280. zahl%=39:zahl3%=9:GOSUB Reg
  281. mx%=48:GOSUB Auswert
  282. GOTO main
  283.  
  284.  
  285. Reg:
  286. FOR i%=1 TO zahl3%
  287.   RANDOMIZE TIMER
  288.   s%=sr4%(i%)
  289.   GOSUB Region
  290.   WINDOW 2:COLOR 2,5:CLS
  291.   WindowToFront(w3&)
  292.   a$=ar$(r%)
  293.   LOCATE 2,2:PRINT "Frage"i%+zahl%
  294.   LINE(3,17)-(75,17),2
  295.   IF LEFT$(a$,1)="*" THEN a$=RIGHT$(a$,LEN(a$)-1):l$="liegen" ELSE l$="liegt"
  296.   IF a$="" THEN x$="" ELSE x$=" "
  297.   fr%=i%+zahl%
  298.   fr$(fr%)="In welcher Region "+l$+x$+a$+" "+s$(r%)+" ?
  299.   LOCATE 4,2:PRINT fr$(fr%)
  300.   FOR j%=1 TO 5 STEP 2
  301.     LOCATE 5+j%*2,10:PRINT x$(j%)
  302.   NEXT
  303.   FOR j%=2 TO 4 STEP 2
  304.     LOCATE 3+j%*2,49:PRINT x$(j%)
  305.   NEXT
  306.   LOCATE 14,49:PRINT "Frage nicht
  307.   LOCATE 15,49:PRINT "beantworten
  308.   rf%=0:hf%=5:ff%=6:ez%=6:anz%=6:GOSUB Auswahl
  309.   WINDOW 3
  310.   PUT(a%(1),b%(1)),re1,PSET
  311.   PUT(a%(2),b%(2)),re2,PSET
  312.   PUT(a%(3),b%(3)),re3,PSET
  313.   PUT(a%(4),b%(4)),re4,PSET
  314.   PUT(a%(5),b%(5)),re5,PSET      
  315.   IF ak%=6 THEN pu%(fr%)=0:ri$(fr%)=x$(x5%):an$(fr%)="---":GOTO 425
  316.   IF ak%=x5% THEN pu%=pu%+2:pu%(fr%)=2:an$(fr%)=x$(x5%)
  317.   IF ak%<>x5% THEN pu%=pu%-1:pu%(fr%)=-1:ri$(fr%)=x$(x5%):an$(fr%)=x$(ak%)
  318.   FOR d=1 TO 700:NEXT
  319. 425 NEXT
  320. RETURN
  321.  
  322. Region:
  323. WINDOW 3
  324. r%=INT(RND*170)+1
  325. IF s4%(r%)<>s% THEN Region
  326. IF ma%(r%)=1 THEN Region
  327. ma%(r%)=1
  328. x$(1)="Gelb":x$(2)="Orange"
  329. x$(3)="Rot":x$(4)="Grün":x$(5)="Blau"
  330. x6%=INT(RND*4)+2
  331. a%(1)=rx%(r%)
  332. b%(1)=ry%(r%)
  333. FOR j%=2 TO 5
  334. 765 IF j%=x6% THEN
  335.     a%(j%)=INT(RND*200+30)
  336.     b%(j%)=INT(RND*80+10)
  337.   ELSE
  338.     q%=INT(RND*170)+1
  339.     a%(j%)=rx%(q%)
  340.     b%(j%)=ry%(q%)
  341.   END IF
  342.   m%=0
  343.   FOR k%=1 TO j%-1
  344.     e=(a%(j%)-a%(k%))^2+((b%(j%)-b%(k%))*2)^2
  345.     IF k%=x5% AND j%=x6% AND e<6000 THEN m%=1
  346.     IF e<600 THEN m%=1
  347.   NEXT k%
  348.   IF m%=1 THEN 765
  349. 771 NEXT j%
  350. q%=INT(RND*5)+1:x5%=q%
  351. SWAP a%(1),a%(q%)
  352. SWAP b%(1),b%(q%)
  353. FOR j%=1 TO 5
  354.   IF j%=1 THEN GET(a%(1),b%(1))-(a%(1)+9,b%(1)+5),re1:PUT(a%(1),b%(1)),gelb,PSET
  355.   IF j%=2 THEN GET(a%(2),b%(2))-(a%(2)+9,b%(2)+5),re2:PUT(a%(2),b%(2)),ora,PSET
  356.   IF j%=3 THEN GET(a%(3),b%(3))-(a%(3)+9,b%(3)+5),re3:PUT(a%(3),b%(3)),rot,PSET
  357.   IF j%=4 THEN GET(a%(4),b%(4))-(a%(4)+9,b%(4)+5),re4:PUT(a%(4),b%(4)),gruen,PSET
  358.   IF j%=5 THEN GET(a%(5),b%(5))-(a%(5)+9,b%(5)+5),re5:PUT(a%(5),b%(5)),blau,PSET
  359. NEXT j%
  360. RETURN 
  361.  
  362. Auswert:
  363. WINDOW 2:COLOR 2,5:CLS
  364. PRINT "Auswertung:
  365. PRINT 
  366. FOR i%=1 TO mx%
  367.   PRINT "Frage";:PRINT USING"###";i%;:PRINT " :  "fr$(i%)
  368.   COLOR 6:y%=CSRLIN*8-3
  369.   IF pu%(i%)<1 THEN
  370.     PRINT " "an$(i%);
  371.     COLOR 4:LOCATE CSRLIN,30
  372.     PRINT ri$(i%);
  373.     LOCATE CSRLIN,70:PRINT pu%(i%)
  374.   ELSE
  375.     PRINT " "an$(i%);
  376.     LINE(241,y%)-(243,y%+2),4
  377.     LINE(243,y%+2)-(248,y%-4),4
  378.     COLOR 4:LOCATE CSRLIN,70:PRINT 2
  379.   END IF
  380.   IF pu%(i%)=-1 THEN
  381.     l%=LEN(an$(i%))
  382.     IF y%>230 THEN y%=y%-8
  383.     LINE(8,y%+3)-(l%*8+7,y%-4),4
  384.   END IF
  385.   COLOR 2:IF i% MOD 12=0 THEN
  386.     PRINT "Taste...
  387. 887 IF INKEY$="" THEN 887
  388.   END IF
  389. NEXT
  390. PRINT :PRINT 
  391. IF pu%<0 THEN pu%=0
  392. pro%=INT(50*pu%/mx%+.5)
  393. PRINT "Punktzahl:"pu%"von maximal"mx%*2"   ( ="pro%"% )
  394. PRINT:PRINT "Bewertung:  ";
  395. IF pro%>92 THEN PRINT "Hyperfantastisch !!!":GOTO 903
  396. IF pro%>84 THEN PRINT "Super":GOTO 903
  397. IF pro%>74 THEN PRINT "Echt stark":GOTO 903
  398. IF pro%>64 THEN PRINT "Erst einmal nachmachen":GOTO 903
  399. IF pro%>54 THEN PRINT "Nicht schlecht":GOTO 903
  400. IF pro%>44 THEN PRINT "Könnte besser sein":GOTO 903
  401. IF pro%>34 THEN PRINT "Ziemlich schwach":GOTO 903
  402. IF pro%>24 THEN PRINT "Schlapp":GOTO 903
  403. IF pro%>14 THEN PRINT "Äußerst schwach":GOTO 903
  404. IF pro%>0 THEN PRINT "Eine mittlere Katastrophe":GOTO 903
  405. PRINT "Absoluter Negativ-Rekord
  406. 903 PRINT :PRINT "Taste...
  407. 904 IF INKEY$="" THEN 904
  408. RETURN
  409.  
  410. Einw:
  411. FOR i%=1 TO zahl3%
  412.   CLS:RANDOMIZE TIMER
  413.   s%=sr3%(i%)
  414.   LOCATE 3,2:PRINT "Frage"i%+zahl%
  415.   LINE(3,25)-(75,25),2
  416.   GOSUB Einwohner
  417.   fr%=i%+zahl%
  418.   fr$(fr%)="Die Einwohnerzahl "+pr$(r%)+" "+s$(r%)+" beträgt:  (in Millionen)
  419.   LOCATE 5,2:PRINT fr$(fr%)
  420.   FOR j%=1 TO 3 STEP 2
  421.     LOCATE 8+j%*2,10:PRINT x$(j%)
  422.   NEXT
  423.   FOR j%=2 TO 4 STEP 2
  424.     LOCATE 6+j%*2,49:PRINT x$(j%)
  425.   NEXT
  426.   LOCATE 17,10:PRINT "Frage nicht
  427.   LOCATE 18,10:PRINT "beantworten
  428.   rf%=0:hf%=5:ff%=6:ez%=9:anz%=5:GOSUB Auswahl
  429.   IF ak%=5 THEN pu%(fr%)=0:ri$(fr%)=x$(x5%):an$(fr%)="---":GOTO 325
  430.   IF ak%=x5% THEN pu%=pu%+2:pu%(fr%)=2:an$(fr%)=x$(x5%)
  431.   IF ak%<>x5% THEN pu%=pu%-1:pu%(fr%)=-1:ri$(fr%)=x$(x5%):an$(fr%)=x$(ak%)
  432.   FOR d=1 TO 700:NEXT
  433. 325 NEXT
  434. RETURN
  435.  
  436. Fl:
  437. FOR i%=1 TO zahl3%
  438.   CLS:RANDOMIZE TIMER
  439.   s%=sr3%(i%)
  440.   LOCATE 3,2:PRINT "Frage"i%+zahl%
  441.   LINE(3,25)-(75,25),2
  442.   GOSUB Flaeche
  443.   fr%=i%+zahl%
  444.   fr$(fr%)="Die Fläche "+pr$(r%)+" "+s$(r%)+" beträgt:  (in 1000 qkm)
  445.   LOCATE 5,2:PRINT fr$(fr%)
  446.   FOR j%=1 TO 3 STEP 2
  447.     LOCATE 8+j%*2,10:PRINT x$(j%)
  448.   NEXT
  449.   FOR j%=2 TO 4 STEP 2
  450.     LOCATE 6+j%*2,49:PRINT x$(j%)
  451.   NEXT
  452.   LOCATE 17,10:PRINT "Frage nicht
  453.   LOCATE 18,10:PRINT "beantworten
  454.   rf%=0:hf%=5:ff%=6:ez%=9:anz%=5:GOSUB Auswahl
  455.   IF ak%=5 THEN pu%(fr%)=0:ri$(fr%)=x$(x5%):an$(fr%)="---":GOTO 225
  456.   IF ak%=x5% THEN pu%=pu%+2:pu%(fr%)=2:an$(fr%)=x$(x5%)
  457.   IF ak%<>x5% THEN pu%=pu%-1:pu%(fr%)=-1:ri$(fr%)=x$(x5%):an$(fr%)=x$(ak%)
  458.   FOR d=1 TO 700:NEXT
  459. 225 NEXT
  460. RETURN
  461.  
  462. Einwohner:
  463. r%=INT(RND*170)+1
  464. IF s3%(r%)<>s% THEN Einwohner
  465. IF ma%(r%)=1 THEN Einwohner
  466. ma%(r%)=1
  467. x$(1)=e$(r%)
  468. g=VAL(x$(1))
  469. 302 g%=INT(RND*4)
  470. IF g>200 AND g%=3 THEN 302
  471. IF g<1 AND g%=0 THEN 302
  472. IF g%>0 THEN g1=g*(1.4+RND*2.6) ELSE g1=g*(.71-RND*.46)
  473. 303 IF g%>1 THEN g2=g*(1.4+RND*6.6) ELSE g2=g*(.71-RND*.585)
  474. IF g1/g2>.71 AND g1/g2<1.4 THEN 303
  475. 304 IF g%=3 THEN g3=g*(1.4+RND*8.6) ELSE g3=g*(.71-RND*.61)
  476. IF g1/g3>.71 AND g1/g3<1.4 THEN 304
  477. IF g2/g3>.71 AND g2/g3<1.4 THEN 304
  478. g=g1:GOSUB rund:g1=g
  479. g=g2:GOSUB rund:g2=g
  480. g=g3:GOSUB rund:g3=g
  481. g$=STR$(g1):x$(2)=RIGHT$(g$,LEN(g$)-1)
  482. g$=STR$(g2):x$(3)=RIGHT$(g$,LEN(g$)-1)
  483. g$=STR$(g3):x$(4)=RIGHT$(g$,LEN(g$)-1)
  484. FOR j%=2 TO 4
  485.   IF VAL(x$(j%))<1 THEN x$(j%)="0"+x$(j%)
  486. NEXT
  487. m%=4:GOSUB Misch
  488. FOR j%=1 TO 4
  489.   IF x$(j%)=e$(r%) THEN x5%=j%
  490. NEXT
  491. RETURN 
  492.  
  493. Flaeche:
  494. r%=INT(RND*170)+1
  495. IF s3%(r%)<>s% THEN Flaeche
  496. IF ma%(r%)=1 THEN Flaeche
  497. ma%(r%)=1
  498. x$(1)=f$(r%)
  499. f=VAL(x$(1))
  500. 202 g%=INT(RND*4)
  501. IF f>8000 AND g%=3 THEN 202
  502. IF f<2 AND g%=0 THEN 202
  503. IF g%>0 THEN f1=f*(1.4+RND*2.6) ELSE f1=f*(.71-RND*.46)
  504. 203 IF g%>1 THEN f2=f*(1.4+RND*6.6) ELSE f2=f*(.71-RND*.585)
  505. IF f1/f2>.71 AND f1/f2<1.4 THEN 203
  506. mu=8.6:mu2=.61
  507. 204 IF g%=3 THEN f3=f*(1.4+RND*mu) ELSE f3=f*(.71-RND*mu2)
  508. IF f1/f3>.71 AND f1/f3<1.4 THEN 204
  509. IF f2/f3>.71 AND f2/f3<1.4 THEN 204
  510. g=f1:GOSUB rund:f1=g
  511. g=f2:GOSUB rund:f2=g
  512. g=f3:GOSUB rund:f3=g
  513. f$=STR$(f1):x$(2)=RIGHT$(f$,LEN(f$)-1)
  514. f$=STR$(f2):x$(3)=RIGHT$(f$,LEN(f$)-1)
  515. f$=STR$(f3):x$(4)=RIGHT$(f$,LEN(f$)-1)
  516. FOR j%=2 TO 4
  517.   IF VAL(x$(j%))<1 THEN x$(j%)="0"+x$(j%)
  518. NEXT
  519. m%=4:GOSUB Misch
  520. FOR j%=1 TO 4
  521.   IF x$(j%)=f$(r%) THEN x5%=j%
  522. NEXT
  523. RETURN 
  524.  
  525. rund:
  526. g#=g:l%=0
  527. r7:
  528. IF g#>=10 THEN
  529.   g#=g#/10:l%=l%+1:GOTO r7
  530. ELSEIF g#<1 THEN
  531.   g#=g#*10:l%=l%-1:GOTO r7
  532. END IF
  533. IF RND<.4-l%*.18 THEN g#=INT(g#+.5):GOTO r8
  534. IF l%<2 OR l%=2 AND RND<.4 THEN g#=INT(g#*10+.5)/10#:GOTO r8
  535. IF l%=2 OR RND<.3 THEN g#=INT(g#*100+.5)/100#:GOTO r8
  536. g#=INT(g#*1000+.5)/1000#
  537. r8:
  538. FOR k%=1 TO l%:g#=g#*10:NEXT
  539. FOR k%=-1 TO l% STEP -1:g#=g#/10:NEXT
  540. g=g#
  541. RETURN
  542.  
  543. Hl:
  544. FOR i%=1 TO zahl2%
  545.   CLS:RANDOMIZE TIMER
  546.   s%=sr2%(i%)
  547.   LOCATE 3,2:PRINT "Frage"i%+zahl%
  548.   LINE(3,25)-(75,25),2
  549.   GOSUB Land:x5%=x%:h$=h$(r%)
  550.   IF RND<.16 THEN
  551.     x5%=7
  552.     IF RND<.5 THEN h$=h1$(r%) ELSE h$=h2$(r%)
  553.   END IF
  554.   fr%=i%+zahl%
  555.   fr$(fr%)=h$+" ist die Hauptstadt von welchem Land ? 
  556.   LOCATE 5,2:PRINT fr$(fr%)
  557.   FOR j%=1 TO 5 STEP 2
  558.     LOCATE 7+j%*2,10:PRINT x$(j%)
  559.   NEXT
  560.   FOR j%=2 TO 6 STEP 2
  561.     LOCATE 5+j%*2,49:PRINT x$(j%)
  562.   NEXT
  563.   LOCATE 20,10:PRINT h$" ist
  564.   LOCATE 21,10:PRINT "keine Hauptstadt
  565.   LOCATE 20,49:PRINT "Frage nicht
  566.   LOCATE 21,49:PRINT "beantworten
  567.   x$(7)=h$+"=keine Hpst."
  568.   rf%=0:hf%=5:ff%=6:ez%=8:anz%=8:GOSUB Auswahl
  569.   IF ak%=8 THEN pu%(fr%)=0:ri$(fr%)=x$(x5%):an$(fr%)="---":GOTO 123
  570.   IF ak%=x5% THEN pu%=pu%+2:pu%(fr%)=2:an$(fr%)=x$(x5%)
  571.   IF ak%<>x5% THEN pu%=pu%-1:pu%(fr%)=-1:ri$(fr%)=x$(x5%):an$(fr%)=x$(ak%)
  572.   FOR d=1 TO 700:NEXT
  573. 123 NEXT
  574. RETURN
  575.  
  576. Hst:
  577. FOR i%=1 TO zahl%
  578.   CLS:RANDOMIZE TIMER
  579.   s%=sr%(i%)
  580.   LOCATE 3,2:PRINT "Frage"i%
  581.   LINE(3,25)-(73,25),2
  582.   GOSUB Hauptstadt:x5%=x%
  583.   fr$(i%)="Wie heißt die Hauptstadt "+pr$(r%)+" "+xs$+" ? 
  584.   LOCATE 5,2:PRINT fr$(i%)
  585.   FOR j%=1 TO 7 STEP 2
  586.     LOCATE 7+j%*2,10:PRINT x$(j%)
  587.   NEXT
  588.   FOR j%=2 TO 6 STEP 2
  589.     LOCATE 5+j%*2,49:PRINT x$(j%)
  590.   NEXT
  591.   LOCATE 20,49:PRINT "Frage nicht
  592.   LOCATE 21,49:PRINT "beantworten
  593.   rf%=0:hf%=5:ff%=6:ez%=8:anz%=8:GOSUB Auswahl
  594.   IF ak%=8 THEN pu%(i%)=0:ri$(i%)=x$(x5%):an$(i%)="---":GOTO 23
  595.   IF ak%=x5% THEN pu%=pu%+2:pu%(i%)=2:an$(i%)=x$(x5%)
  596.   IF ak%<>x5% THEN pu%=pu%-1:pu%(i%)=-1:ri$(i%)=x$(x5%):an$(i%)=x$(ak%)
  597.   FOR d=1 TO 700:NEXT
  598. 23 NEXT
  599. RETURN
  600.  
  601. Hauptstadt:
  602. r%=INT(RND*170)+1
  603. IF s%(r%)<>s% THEN Hauptstadt
  604. IF ma%(r%)=1 THEN Hauptstadt
  605. ma%(r%)=1
  606. xs$=s$(r%)
  607. x$(1)=h$(r%)
  608. x$(2)=h1$(r%)
  609. x$(3)=h2$(r%)
  610. FOR j%=4 TO 7
  611. 14 q%=INT(RND*170)+1:qq%=INT(RND*3):m%=0
  612.   IF qq%=0 THEN q$=h$(q%)
  613.   IF qq%=1 THEN q$=h1$(q%)
  614.   IF qq%=2 THEN q$=h2$(q%)
  615.   FOR k%=1 TO j%-1
  616.     IF x$(k%)=q$ THEN m%=1
  617.   NEXT
  618.   IF m%=1 THEN 14
  619.   x$(j%)=q$
  620. NEXT
  621. m%=7:GOSUB Misch
  622. FOR j%=1 TO 7
  623.   IF x$(j%)=h$(r%) THEN x%=j%
  624. NEXT
  625. RETURN
  626.  
  627. Land:
  628. r%=INT(RND*170)+1
  629. IF s2%(r%)<>s% THEN Land
  630. IF ma%(r%)=1 THEN Land
  631. ma%(r%)=1
  632. x$(1)=s$(r%):a%=2
  633. IF r%>1 THEN x$(2)=s$(r%-1):a%=3
  634. IF r%<170 THEN x$(3)=s$(r%+1):a%=a%+1
  635. FOR j%=a% TO 6
  636. 114 q%=INT(RND*170)+1:m%=0
  637.   q$=s$(q%)
  638.   FOR k%=1 TO j%-1
  639.     IF x$(k%)=q$ THEN m%=1
  640.   NEXT
  641.   IF m%=1 THEN 114
  642.   x$(j%)=q$
  643. NEXT
  644. m%=6:GOSUB Misch
  645. FOR j%=1 TO 6
  646.   IF x$(j%)=s$(r%) THEN x%=j%
  647. NEXT
  648. RETURN
  649.  
  650. Misch:
  651. FOR mi%=1 TO m%*5
  652.   m1%=INT(RND*m%)+1
  653.   m2%=INT(RND*m%)+1
  654.   SWAP x$(m1%),x$(m2%)
  655. NEXT
  656. RETURN
  657.  
  658. Auswahl:
  659. FOR j%=0 TO anz%-1
  660.   x1%=11+(j% MOD 2)*312:x2%=59+(j% MOD 2)*312
  661.   y1%=ez%*8+(j%\2)*32-9:y2%=ez%*8+(j%\2)*32+14
  662.   LINE(x1%,y1%)-(x2%,y2%),rf%,b
  663.   x1%(j%+1)=x1%
  664.   x2%(j%+1)=x2%
  665.   y1%(j%+1)=y1%
  666.   y2%(j%+1)=y2%
  667. NEXT:ak%=0:PATTERN &H6318
  668. 57 IF MOUSE(0)=0 THEN 57
  669. 58 IF MOUSE(0)=0 THEN 58
  670. x%=MOUSE(1):y%=MOUSE(2):neu%=0
  671. FOR j%=1 TO anz%
  672.   IF x%>=x1%(j%) AND x%<=x2%(j%) AND y%>=y1%(j%) AND y%<=y2%(j%) THEN neu%=j%
  673. NEXT
  674. IF neu%=0 THEN GOSUB clr:ak%=0:GOTO 57
  675. IF neu%=ak% THEN 66
  676. GOSUB clr:ak%=neu%
  677. LINE(x1%(ak%)+1,y1%(ak%)+1)-(x2%(ak%)-1,y2%(ak%)-1),ff%
  678. LINE(x1%(ak%)+1,y2%(ak%)-1)-(x2%(ak%)-1,y1%(ak%)+1),ff%
  679. GOTO 57
  680. 66 PATTERN &HFFFF
  681. LINE(x1%(ak%)+1,y1%(ak%)+1)-(x2%(ak%)-1,y2%(ak%)-1),ff%
  682. LINE(x1%(ak%)+1,y2%(ak%)-1)-(x2%(ak%)-1,y1%(ak%)+1),ff%
  683. RETURN
  684.  
  685. clr:
  686. FOR j%=1 TO anz%
  687.   LINE(x1%(j%)+1,y1%(j%)+1)-(x2%(j%)-1,y2%(j%)-1),hf%,bf
  688. NEXT:RETURN
  689.  
  690. Karte:
  691. COLOR 2,5:CLS
  692. RESTORE 390
  693. 280 READ n%
  694. IF n%<0 THEN RETURN
  695. READ x1%,y1%,x%,y%
  696. LINE (x1%*2,y1%+1)-(x%*2,y%+1),2
  697. FOR k%=3 TO n%
  698.   READ x%,y%
  699.   LINE -(x%*2,y%+1),2
  700. NEXT k%
  701. GOTO 280
  702. 390 DATA 168,2,16,3,16,3,15,4,14,6,14,6,12,8,12,9,10,10,10,12,9,15,9,17,10
  703. DATA 19,11,25,11,27,12,27,13,30,13,30,12,28,12,28,10,26,10,26,9,28,8,30,8
  704. DATA 30,9,32,10,32,9,33,9,33,12,31,12,32,13,35,13,35,11,37,9,39,9,36,12
  705. DATA 39,12,39,10,40,9,43,9,46,12,46,14,43,17,40,15,40,14,42,14,43,13,42,12
  706. DATA 40,12,40,13,38,14,38,16,34,16,30,19,30,20,33,22,34,22,34,25,37,21
  707. DATA 36,19,39,17,40,17,41,18,41,19,43,18,44,22,46,23,46,24,45,24,45,25
  708. DATA 45,26,46,26,46,28,43,27,43,26,45,25,42,25,39,25,40,27,40,30,37,30
  709. DATA 32,35,32,37,28,39,29,43,28,44,27,43,26,40,24,40,24,41,21,41,18,44
  710. DATA 18,46,17,47,19,49,21,48,21,46,24,46,22,51,25,51,25,55,28,55,28,56
  711. DATA 29,56,32,53,35,55,36,54,42,58,44,58,45,60,45,62,47,62,48,64,51,64
  712. DATA 54,66,54,68,52,71,52,76,48,80,48,83,45,87,45,88,42,91,42,94,43,95
  713. DATA 43,99,45,100,42,100,43,99,41,100,38,96,35,88,35,83,34,76,30,74,30,73
  714. DATA 26,66,26,62,28,57,27,56,24,56,22,53,21,53,21,52,19,52,19,51,16,51
  715. DATA 12,49,13,47,10,40,11,46,10,46,8,42,8,38,7,37,7,32,11,27,12,27,12,26
  716. DATA 11,24,12,19,9,17,7,18,6,18,6,19,4,19,2,20,2,16
  717. DATA 5
  718. DATA 31,8,34,7,35,8,32,9,31,8
  719. DATA 4
  720. DATA 34,9,36,9,34,11,34,9
  721. DATA 5
  722. DATA 36,7,38,7,38,8,36,8,36,7
  723. DATA 40
  724. DATA 42,7,46,4,44,4,43,6,41,6,41,5,44,4,48,2,50,2,51,3,50,4,54,3,58,3,61,1
  725. DATA 64,1,65,3,67,3,67,4,65,8,64,8,62,10,63,10,63,11,59,12,58,14,57,14
  726. DATA 53,19,51,18,49,14,51,12,51,11,52,11,52,8,48,8,47,7,50,4,48,4,45,8
  727. DATA 44,7,42,7
  728. DATA 6
  729. DATA 62,13,66,13,67,14,64,16,62,14,62,13
  730. DATA 7
  731. DATA 25,46,26,45,28,45,31,47,29,48,29,47,25,46
  732. DATA 5
  733. DATA 32,47,34,48,32,49,31,48,32,47
  734. DATA 5
  735. DATA 78,5,80,5,81,6,79,7,78,5
  736. DATA 4
  737. DATA 81,4,82,4,82,5,81,4
  738. DATA 4
  739. DATA 81,6,82,6,82,7,81,6
  740. DATA 8
  741. DATA 94,10,94,8,97,6,98,6,98,7,95,9,95,10,94,10
  742. DATA 9
  743. DATA 96,70,98,69,98,68,99,67,100,70,98,76,96,77,95,75,96,70
  744. DATA 5
  745. DATA 140,20,143,23,143,25,142,25,140,20
  746. DATA 5
  747. DATA 143,26,145,26,146,27,144,29,143,26
  748. DATA 9
  749. DATA 145,29,147,30,147,33,143,36,142,35,144,34,142,34,145,32,145,29
  750. DATA 5
  751. DATA 139,40,140,40,140,43,139,42,139,40
  752. DATA 7
  753. DATA 140,46,141,45,142,48,143,50,142,50,139,48,140,46
  754. DATA 4
  755. DATA 140,51,140,52,139,53,140,51
  756. DATA 4
  757. DATA 142,50,143,52,142,52,142,50
  758. DATA 10
  759. DATA 144,52,145,53,144,56,143,55,143,54,142,54,142,53,142,52,143,52,144,52
  760. DATA 9
  761. DATA 138,54,140,54,140,60,138,62,135,62,134,60,134,57,136,57,138,54
  762. DATA 8
  763. DATA 141,58,144,58,144,59,142,59,143,64,141,64,140,62,141,58
  764. DATA 5
  765. DATA 145,58,146,58,146,59,145,59,145,58
  766. DATA 15
  767. DATA 147,59,149,59,150,60,152,60,156,62,158,64,160,64,158,66,160,68,157,68
  768. DATA 155,66,152,67,151,64,148,62,147,59
  769. DATA 4
  770. DATA 143,66,140,66,140,67,141,67
  771. DATA 2
  772. DATA 143,67,144,66
  773. DATA 13
  774. DATA 160,86,162,86,163,90,160,93,159,92,154,96,152,96,152,95,158,91
  775. DATA 159,92,159,90,161,89,160,86
  776. DATA 26
  777. DATA 133,85,134,83,134,76,136,74,138,74,143,70,145,70,148,68,150,68
  778. DATA 150,70,152,72,153,68,154,68,156,76,158,78,152,88,146,89,148,90
  779. DATA 148,91,146,92,146,89,144,84,139,84,139,85,134,85,133,84
  780. DATA 10
  781. DATA 126,55,127,55,133,61,132,65,136,66,137,65,136,64,131,64,126,57,126,55
  782. DATA 9
  783. DATA 68,20,70,19,71,20,71,22,72,23,72,24,68,25,69,22,68,20
  784. DATA 5
  785. DATA 68,22,68,24,66,24,67,22,68,22
  786. DATA 181
  787. DATA 65,36,60,44,60,52,66,57,74,57,74,60,77,64,77,68,76,70,76,73,80,84
  788. DATA 86,83,91,76,91,73,94,70,94,66,93,64,93,62,100,54,100,51,96,52
  789. DATA 92,47,90,40,94,46,96,50,100,49,102,48
  790. DATA 105,44,97,41,98,38,103,41
  791. DATA 105,42,108,42,110,45
  792. DATA 112,45,113,52,115,55,116,55,117,52,117,55,118,55,118,53,117,52
  793. DATA 118,48,122,44,127,51,127,53,130,58,132,58,132,57,128,52,128,50
  794. DATA 132,54,134,52,134,50,132,46,132,44,136,44,138,42,139,36,136,34
  795. DATA 136,32,134,32,134,30,137,30,139,34,140,34,141,33,139,30,139,28
  796. DATA 141,28,141,28,136,18,136,16,141,16,141,14,143,14,143,18,147,21
  797. DATA 148,20,145,15,148,12,147,10,150,10,149,8,146,8,144,7,138,7,138,8
  798. DATA 134,8,134,7,126,7,126,8,122,8,122,7,115,7,114,5,110,5,110,4,108,4
  799. DATA 106,2,104,4,105,4,105,3,106,3,106,5,108,5,108,7,106,7,102,9,104,12
  800. DATA 102,12,100,8,99,8,99,10,100,12,94,12,92,13,91,11,90,11,90,14,88,15
  801. DATA 88,14,89,13,84,10,82,10,74,17,74,20,76,19,79,21,80,20,80,17,82,14
  802. DATA 84,16,82,18,83,20,80,22,76,22,76,20,75,20,75,22,70,26,69,26,70,28
  803. DATA 70,29,66,29,65,33,67,34,71,33,71,31,76,29,79,33,79,34,80,34,80,31
  804. DATA 76,28,79,28,83,34,83,32,86,31,86,28,88,28,89,29,90,27,92,27,91,28
  805. DATA 93,30,88,30,85,33,86,34,90,34,90,38,86,38,83,36,80,38,76,36,76,34
  806. DATA 71,34,70,35,67,35,65,36
  807. DATA 5
  808. DATA 96,28,98,27,100,34,98,34,96,28
  809. DATA -34
  810.  
  811.